package org.ehe.business.bom.domain.vo;

import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
import cn.idev.excel.annotation.ExcelProperty;
import lombok.Data;
import org.ehe.business.bom.domain.BomStructure;
import org.ehe.business.drawing.domain.vo.DesignDrawingVO;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;

/**
 * BOM分页视图对象（展平结构，每行显示一个物料项）
 * @author zhangnn
 * @date 2025-08-01
 */
@Data
@ExcelIgnoreUnannotated
public class BomPageVO {

    private Long id;
    /**
     * BOM主表ID
     */
    private Long bomId;

    private Long drawId;

    /**
     * BOM编码
     */
    @ExcelProperty(value = "BOM编码")
    private String bomCode;

    /**
     * BOM名称
     */
    @ExcelProperty(value = "BOM名称")
    private String bomName;

    private Long projectId;
    /**
     * 项目名称
     */
    @ExcelProperty(value = "项目名称")
    private String projectName;



    private Long solutionId;

    private String solutionName;

    private int bomType;
    /**
     * BOM类型名称
     */
    @ExcelProperty(value = "BOM类型")
    private String bomTypeName;


    private String status;
    /**
     * 状态名称
     */
    @ExcelProperty(value = "状态")
    private String statusName;

    /**=======设计稿信息======*/
    private String drawNo;

    private String drawName;

    private String drawCode;
    /**
     * 当前版本号
     */
    @ExcelProperty(value = "版本")
    private String currentVersion;


    /**
     * 生效日期
     */
    private Date effectiveDate;

    /**
     * 失效日期
     */
    private Date expireDate;
    // =================== 物料项信息 ===================
    private List<BomStructure> structureList;

    /**
     * 备注
     */
    @ExcelProperty(value = "备注")
    private String remark;

    private DesignDrawingVO drawingVO;

    private String approveStatus;
    /**
     * 预估完成小时数
     */
    private Integer estimatedHours;
    /**
     * 任务截止时间
     */
    private LocalDateTime taskDeadline;

    /**
     * 任务是否超期
     */
    private String isTaskTimeout;

    /**
     * 响应是否超期：处理状态：0-未处理，1-已处理，2-已超期,3-超期未处理，4超期已处理
     */
    private String isOverdue;

    /**
     * 响应 截止时间
     */
    private LocalDateTime isOverdueEndTime;
}
